Some computing devices, such as laptop computers, include one or more input devices, such as a mouse, a keyboard, or a touch screen. Various computing devices include a trackpad or touchpad that can be used in place of or in addition to a mouse to maneuver a curser on a computer screen, or to trigger one or more functions of a computing device. Such trackpads or touchpads can be coupled to, or integrated within, the computing device.
A touchpad (also referred to herein interchangeably as a trackpad) is a pointing device featuring a tactile sensor, which is a specialized surface that can translate the motion and position of a user's fingers to a relative position on screen. Touchpads are a feature of laptop computers or mobile devices, and are also used as a substitute for a mouse, for example where desk space is scarce. Because they vary in size, they can also be found on personal digital assistants and portable media players. Wired or wireless touchpads are also available as accessories.
Sometimes, a trackpad's firmware does not function well in association with input from the trackpad. The firmware associated with the trackpad of a computing system may do a poor job of mapping from a raw grid of sensors associated with the trackpad to a location where individual fingers are actually located on the trackpad. This may occur because a trackpad does not have enough sensors to accurately sense finger movement. Further, an algorithm used to find a center between sensors on the raw grid (i.e., a centroiding algorithm) may not function well, resulting in jagged cursor movement instead of smooth movement. Alternatively or additionally, hardware sensors on the trackpad may be spaced too far apart to sense certain finger movement accurately. For example, if a finger spans multiple sensors or is moving on a line between a row of sensors, the firmware may pick the wrong sensor points. Every time the hardware samples the sensor points it may make a decision about where the finger appears to be located but may periodically pick the wrong sensor as the center point.
If these issues occur, they result in a poor user experience. A display of the computing system might not provide a smooth line of movement even when a finger is moving smoothly. Instead, the system may process the finger input (vertical, horizontal, two-finger input, etc.) as a bunch of points grouped together followed by a jump and then another group of points together. Another example of poor user experience is when a user moves a finger a tiny bit on a trackpad, but a big jump occurs on the display. Yet another example of a poor user experience that occurs is finger wobble that results in unintended movement, for example when a finger is first placed on a trackpad.
Some systems may attempt to resolve poor user experience by “smoothing” out data or otherwise averaging midpoints of user input data, but this may result in an inaccurate display of what the user intended. Accordingly, there exists a need to process and filter movement on a trackpad using new techniques.